そんな中、C++の作者であるストロヴストルップは1987年の“What is "Object-Oriented Programming?"”という論文でオブジェクト指向プログラミングを次のように「データ隠蔽」および「データ抽象」の延長上に位置付けています。
- データ隠蔽
- データ型の詳細を特定のモジュールの中に隠す
- データ抽象
- 「データ隠蔽」 + データ型を組込みデータ型と同じように扱えるようにする
- オブジェクト指向プログラミング
- 「データ抽象」 + データ型間の共通性を継承により明確にする
意外と知られていない構造化プログラミング、あるいは構造化プログラミングはデータも手続きと一緒に抽象化する、あるいはストロヴストルップのオブジェクト指向プログラミング史観